function dice10_vao_gen(gl, programInfo_cube){
	//dice10
	const VAO_dice10 = gl.createVertexArray();
	gl.bindVertexArray(VAO_dice10);
	const VBO_dice10 = gl.createBuffer();
	gl.bindBuffer(gl.ARRAY_BUFFER, VBO_dice10);
	{
	const radial = 1.0;
	const tmp = radial - 0.1056 * radial;

	let dice10 = [
		0, radial, 0, 						0, 0, 0,		0, 0,
		tmp, 0.1056*radial, 0, 				0, 0, 0,		0, 0,
		tmp*0.809, -0.1056*radial, tmp*0.588, 	0, 0, 0,		0, 0,
		
		0, radial, 0, 						0, 0, 0,		0, 0,
		tmp*0.809, -0.1056*radial, tmp*0.588, 	0, 0, 0,		0, 0,
		tmp*0.309, 0.1056*radial, tmp*0.951, 	0, 0, 0,		0, 0,
		
		
		0, radial, 0, 						0, 0, 0,		0, 0,
		tmp*0.309, 0.1056*radial, tmp*0.951, 	0, 0, 0,		0, 0,
		tmp*-0.309, -0.1056*radial, tmp*0.951, 	0, 0, 0,		0, 0,
		
		0, radial, 0, 						0, 0, 0,		0, 0,
		tmp*-0.309, -0.1056*radial, tmp*0.951, 	0, 0, 0,		0, 0,
		tmp*-0.809, 0.1056*radial, tmp*0.588, 	0, 0, 0,		0, 0,
		
		
		0, radial, 0, 						0, 0, 0,		0, 0,
		tmp*-0.809, 0.1056*radial, tmp*0.588, 	0, 0, 0,		0, 0,
		-tmp, -0.1056*radial, 0,			 	0, 0, 0,		0, 0,
		
		0, radial, 0, 						0, 0, 0,		0, 0,
		-tmp, -0.1056*radial, 0,			 	0, 0, 0,		0, 0,
		tmp*-0.809, 0.1056*radial, tmp*-0.588, 	0, 0, 0,		0, 0,
		
		
		0, radial, 0, 						0, 0, 0,		0, 0,
		tmp*-0.809, 0.1056*radial, tmp*-0.588, 	0, 0, 0,		0, 0,
		tmp*-0.309, -0.1056*radial, tmp*-0.951, 	0, 0, 0,		0, 0,
		
		0, radial, 0, 						0, 0, 0,		0, 0,
		tmp*-0.309, -0.1056*radial, tmp*-0.951, 	0, 0, 0,		0, 0,
		tmp*0.309, 0.1056*radial, tmp*-0.951, 	0, 0, 0,		0, 0,
		
		
		0, radial, 0, 						0, 0, 0,		0, 0,
		tmp*0.309, 0.1056*radial, tmp*-0.951, 	0, 0, 0,		0, 0,
		tmp*0.809, -0.1056*radial, tmp*-0.588, 	0, 0, 0,		0, 0,
		
		0, radial, 0, 						0, 0, 0,		0, 0,
		tmp*0.809, -0.1056*radial, tmp*-0.588, 	0, 0, 0,		0, 0,
		tmp, 0.1056*radial, 0, 				0, 0, 0,		0, 0,
		
		
		//z轴取反
		/*
		0, -radial, 0, 						0, 0, 0,		0, 0,
		tmp, 0.1056*radial, 0, 				0, 0, 0,		0, 0,
		tmp*0.809, -0.1056*radial, -tmp*0.588, 	0, 0, 0,		0, 0,
		*/
		
		0, -radial, 0, 						0, 0, 0,		0, 0,
		tmp*0.809, -0.1056*radial, -tmp*0.588, 	0, 0, 0,		0, 0,
		tmp*0.309, 0.1056*radial, -tmp*0.951, 	0, 0, 0,		0, 0,
		
		
		0, -radial, 0, 						0, 0, 0,		0, 0,
		tmp*0.309, 0.1056*radial, -tmp*0.951, 	0, 0, 0,		0, 0,
		tmp*-0.309, -0.1056*radial, -tmp*0.951, 	0, 0, 0,		0, 0,
		
		0, -radial, 0, 						0, 0, 0,		0, 0,
		tmp*-0.309, -0.1056*radial, -tmp*0.951, 	0, 0, 0,		0, 0,
		tmp*-0.809, 0.1056*radial, -tmp*0.588, 	0, 0, 0,		0, 0,
		
		
		0, -radial, 0, 						0, 0, 0,		0, 0,
		tmp*-0.809, 0.1056*radial, -tmp*0.588, 	0, 0, 0,		0, 0,
		-tmp, -0.1056*radial, 0,			 	0, 0, 0,		0, 0,
		
		0, -radial, 0, 						0, 0, 0,		0, 0,
		-tmp, -0.1056*radial, 0,			 	0, 0, 0,		0, 0,
		tmp*-0.809, 0.1056*radial, -tmp*-0.588, 	0, 0, 0,		0, 0,
		
		
		0, -radial, 0, 						0, 0, 0,		0, 0,
		tmp*-0.809, 0.1056*radial, -tmp*-0.588, 	0, 0, 0,		0, 0,
		tmp*-0.309, -0.1056*radial, -tmp*-0.951, 	0, 0, 0,		0, 0,
		
		0, -radial, 0, 						0, 0, 0,		0, 0,
		tmp*-0.309, -0.1056*radial, -tmp*-0.951, 	0, 0, 0,		0, 0,
		tmp*0.309, 0.1056*radial, -tmp*-0.951, 	0, 0, 0,		0, 0,
		
		
		0, -radial, 0, 						0, 0, 0,		0, 0,
		tmp*0.309, 0.1056*radial, -tmp*-0.951, 	0, 0, 0,		0, 0,
		tmp*0.809, -0.1056*radial, -tmp*-0.588, 	0, 0, 0,		0, 0,
		
		0, -radial, 0, 						0, 0, 0,		0, 0,
		tmp*0.809, -0.1056*radial, -tmp*-0.588, 	0, 0, 0,		0, 0,
		tmp, 0.1056*radial, 0, 				0, 0, 0,		0, 0,
		
		
		0, -radial, 0, 						0, 0, 0,		0, 0,
		tmp, 0.1056*radial, 0, 				0, 0, 0,		0, 0,
		tmp*0.809, -0.1056*radial, -tmp*0.588, 	0, 0, 0,		0, 0,
		
	];
		
	
	//法向量生成函数
	for(let i = 0;i < 20;i += 1){
		//cal
		let v1 = [
			dice10[i * 3 * 8] - dice10[i * 3 * 8 + 8],
			dice10[i * 3 * 8 + 1] - dice10[i * 3 * 8 + 8 + 1],
			dice10[i * 3 * 8 + 2] - dice10[i * 3 * 8 + 8 + 2],
		];
		
		let v2 = [
			dice10[i * 3 * 8 + 16] - dice10[i * 3 * 8 + 8],
			dice10[i * 3 * 8 + 16 + 1] - dice10[i * 3 * 8 + 8 + 1],
			dice10[i * 3 * 8 + 16 + 2] - dice10[i * 3 * 8 + 8 + 2],
		];
		
		let norm = normal_gen(v1, v2);
		//
		for(let j = 0;j < 3;j += 1){
			dice10[i * 3 * 8 + j * 8 + 3] = norm[0];
			dice10[i * 3 * 8 + j * 8 + 4] = norm[1];
			dice10[i * 3 * 8 + j * 8 + 5] = norm[2];
		}
	}
	
	//纹理坐标生成
	for(let row = 0;row< 4;row += 1){
		for(let col = 0;col < 5;col += 1){
			let i = row * 5 + col;
			if(i >= 10){
				break;
			}
			
			dice10[i * 6 * 8 + 6] = (col + 0.5) / 5.0;
			dice10[i * 6 * 8 + 7] = (5.0 - row) / 5.0;
			
			dice10[i * 6 * 8 + 8 + 6] = (col + 1.0) / 5.0;
			dice10[i * 6 * 8 + 8 + 7] = (5.0 - row - 1.0) / 5.0;
			
			dice10[i * 6 * 8 + 16 + 6] = (col + 0.5) / 5.0;
			dice10[i * 6 * 8 + 16 + 7] = (5.0 - row - 1.0) / 5.0;
			
			
			dice10[i * 6 * 8 + 24 + 6] = (col + 0.5) / 5.0;
			dice10[i * 6 * 8 + 24 + 7] = (5.0 - row) / 5.0;
			
			dice10[i * 6 * 8 + 32 + 6] = (col + 0.5) / 5.0;
			dice10[i * 6 * 8 + 32 + 7] = (5.0 - row - 1.0) / 5.0;
			
			dice10[i * 6 * 8 + 40 + 6] = (col) / 5.0;
			dice10[i * 6 * 8 + 40 + 7] = (5.0 - row - 1.0) / 5.0;
			
		}
	}
	gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(dice10), gl.STATIC_DRAW);
	
	}
	gl.vertexAttribPointer(
		programInfo_cube.attribLocations.vertexPosition,
		3,
		gl.FLOAT,
		false,
		32,
		0,
	);
	gl.vertexAttribPointer(
		programInfo_cube.attribLocations.normPosition,
		3,
		gl.FLOAT,
		false,
		32,
		12,
	);
	gl.vertexAttribPointer(
		programInfo_cube.attribLocations.coordPosition,
		2,
		gl.FLOAT,
		false,
		32,
		24,
	);
	gl.enableVertexAttribArray(programInfo_cube.attribLocations.vertexPosition);
	gl.enableVertexAttribArray(programInfo_cube.attribLocations.normPosition);
	gl.enableVertexAttribArray(programInfo_cube.attribLocations.coordPosition);
	
	return VAO_dice10;
}